home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SNNSV32.ZIP / SNNSv3.2 / xgui / sources / d3_model.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-25  |  5.0 KB  |  190 lines

  1. /*****************************************************************************
  2.   FILE           : d3_model.c
  3.   SHORTNAME      : model.c
  4.   SNNS VERSION   : 3.2
  5.  
  6.   PURPOSE        : controls the model pannel
  7.   NOTES          :
  8.  
  9.   AUTHOR         : Ralf Huebner
  10.   DATE           : 1.12.1991
  11.  
  12.   CHANGED BY     :
  13.   IDENTIFICATION : @(#)d3_model.c    1.10 3/2/94
  14.   SCCS VERSION   : 1.10
  15.   LAST CHANGE    : 3/2/94
  16.  
  17.              Copyright (c) 1990-1994  SNNS Group, IPVR, Univ. Stuttgart, FRG
  18.              
  19. ******************************************************************************/
  20.  
  21.  
  22. #include <stdio.h>
  23. #include <memory.h>
  24.  
  25. #include <X11/Xlib.h>
  26. #include <X11/Xutil.h>
  27. #include <X11/Intrinsic.h>
  28. #include <X11/StringDefs.h>
  29. #include <X11/Shell.h>
  30. #include <X11/Xaw/Simple.h>
  31. #include <X11/Xaw/Box.h>
  32. #include <X11/Xaw/Form.h>
  33. #include <X11/Xaw/Toggle.h>
  34.  
  35. #include "ui.h"
  36. #include "glob_typ.h"
  37. #include "ui_xWidgets.h"
  38. #include "d3_global.h"
  39. #include "d3_xUtils.h"
  40. #include "d3_main.h"
  41. #include "d3_zgraph.h"
  42.  
  43. #include "d3_model.ph"
  44.  
  45.  
  46. /*****************************************************************************
  47.   FUNCTION : setModelToggleState
  48.  
  49.   PURPOSE  : sets the toggles in the model pannel
  50.   RETURNS  : void
  51.   NOTES    :
  52.  
  53.   UPDATE   :
  54. ******************************************************************************/
  55.  
  56. static void setModelToggleState (void)
  57.  
  58. {
  59.     switch (temp_state.model_mode) {
  60.         case wire_frame: ui_xSetToggleState (wireButton, TRUE);
  61.                          ui_xSetToggleState (solidButton, FALSE);
  62.                          break;
  63.         case solid     : ui_xSetToggleState (wireButton, FALSE);
  64.                          ui_xSetToggleState (solidButton, TRUE);
  65.                          break;
  66.       }
  67. }
  68.  
  69.  
  70. /*****************************************************************************
  71.   FUNCTION : d3_closeModelPannel
  72.  
  73.   PURPOSE  : closes the model pannel
  74.   RETURNS  : void
  75.   NOTES    :
  76.  
  77.   UPDATE   :
  78. ******************************************************************************/
  79.  
  80. static void d3_closeModelPannel (Widget w, Widget pannel, caddr_t call_data)
  81.  
  82. {
  83.     XtDestroyWidget (pannel);
  84.     if (memcmp (&d3_state, &temp_state, 
  85.                 sizeof (d3_state_type)) != 0) {
  86.          memcpy (&d3_state, &temp_state, 
  87.                  sizeof (d3_state_type)); 
  88.          d3_drawNet ();
  89.     }
  90. }
  91.  
  92.  
  93. /*****************************************************************************
  94.   FUNCTION : setModelWire
  95.  
  96.   PURPOSE  : sets mode to draw a wireframe net
  97.   RETURNS  : void
  98.   NOTES    :
  99.  
  100.   UPDATE   :
  101. ******************************************************************************/
  102.  
  103. static void setModelWire (void)
  104.  
  105. {
  106.     temp_state.model_mode = wire_frame;
  107.     setModelToggleState (); 
  108.     d3_freeZbuffer ();
  109. }
  110.  
  111.  
  112. /*****************************************************************************
  113.   FUNCTION : setModelSolid
  114.  
  115.   PURPOSE  : sets mode to draw a solid net
  116.   RETURNS  : void
  117.   NOTES    :
  118.  
  119.   UPDATE   :
  120. ******************************************************************************/
  121.  
  122. static void setModelSolid (void)
  123.  
  124. {
  125.     if (d3_initZbuffer ()) {
  126.         temp_state.model_mode = solid;
  127.         setModelToggleState ();
  128.     }
  129. }
  130.  
  131.  
  132. /*****************************************************************************
  133.   FUNCTION : d3_createModelPannel
  134.  
  135.   PURPOSE  : creates the model pannel
  136.   RETURNS  : void
  137.   NOTES    :
  138.  
  139.   UPDATE   :
  140. ******************************************************************************/
  141.  
  142. void d3_createModelPannel (Widget w, Widget button, caddr_t call_data)
  143.  
  144. {
  145.     int n;
  146.     Arg arg[10];
  147.     Position xPos, yPos;
  148.     Dimension width, height;
  149.     Widget modelPannel, border, pannel, doneButton;
  150.  
  151.     n = 0;
  152.     XtSetArg (arg[n], XtNwidth, &width);   n++;
  153.     XtSetArg (arg[n], XtNheight, &height); n++;
  154.     XtGetValues (button, arg, (unsigned int) n);
  155.     XtTranslateCoords (button, (Position) (width / 2), (Position) (height / 2), 
  156.                        &xPos, &yPos);
  157.  
  158.     n = 0;
  159.     XtSetArg(arg[n], XtNx, xPos); n++;
  160.     XtSetArg(arg[n], XtNy, yPos); n++;
  161.     modelPannel = XtCreatePopupShell ("model", transientShellWidgetClass, 
  162.                                       button, arg, (unsigned int) n);
  163.  
  164.     border = XtCreateManagedWidget("border", boxWidgetClass, 
  165.                                    modelPannel, NULL, ZERO);
  166.     pannel = XtCreateManagedWidget("pannel", boxWidgetClass, 
  167.                                    border, NULL, ZERO);
  168.  
  169.     wireButton = d3_xCreateToggleItem ("wire", pannel, NULL, NULL, NULL);
  170.     solidButton = d3_xCreateToggleItem ("solid", pannel, NULL, NULL, wireButton);
  171.     doneButton = d3_xCreateButtonItem ("done", border, NULL, NULL);
  172.  
  173.     XtAddCallback (wireButton, XtNcallback, (XtCallbackProc) setModelWire, NULL);
  174.     XtAddCallback (solidButton, XtNcallback, (XtCallbackProc)setModelSolid, NULL);
  175.     XtAddCallback (doneButton, XtNcallback, (XtCallbackProc)d3_closeModelPannel, 
  176.                    (Widget) modelPannel);
  177.  
  178.     memcpy (&temp_state, &d3_state, sizeof (d3_state_type)); 
  179.  
  180.     setModelToggleState ();
  181.  
  182.     ui_checkWindowPosition(modelPannel);
  183.     XtPopup (modelPannel, XtGrabExclusive);
  184.     ui_xDontResizeWidget(modelPannel); 
  185. }
  186.  
  187.  
  188. /* end of file */
  189. /* lines: 208 */
  190.